#pragma once

namespace Core{
	class GeneralSettings{
	public:
		static void loadConfigFile(std::string &filename);

		static const std::pair<unsigned int,unsigned int>& getResolution();
		static const unsigned int getMultisampleCount();
		static bool getFullScreen();

		static std::string& getDataPath() { return m_dataPath; }
		static std::string findFilePath(std::string &filename, std::string subDir="");
		static std::vector<std::string> getFilesInFolder(std::string &folder);
		static void applyNewSettings();
	private:
		typedef std::map<std::string,std::string> SettingCategory;
		GeneralSettings();

		static void getCategory(SettingCategory* category, std::ifstream &file, char* readBuffer);
		static std::string getSettingValue(std::string category, std::string post);
	private:
		static std::string m_dataPath;
		static std::map<std::string,SettingCategory> m_settingsMap;
	};
}